public class RightClick {
@SubscribeEvent
public static void RightClick(PlayerInteractEvent.RightClickItem event) {
if (!event.getLevel().isClientSide) {
Player player = event.getEntity();
Component rightClickMessage = Component.literal("RightClick");
player.sendSystemMessage(rightClickMessage);
Component leverMessage = Component.literal("This is a Lever");
ItemStack HeldItem = player.getItemInHand(InteractionHand.MAIN_HAND);
if (!HeldItem.isEmpty() && HeldItem.getItem() == Items.LEVER) {
player.sendSystemMessage(leverMessage);
double x = player.getX();
double y = player.getY()+player.getEyeHeight();
double z = player.getZ();
float speed = 3.0F;
for (int i = -1; i <= 1; i++) {
for (int j = -1; j <= 1; j++) {
Arrow arrow = new Arrow(player.level, x, y, z);
arrow.shootFromRotation(player, player.getXRot()+i*5,player.getYRot()+j*5, 1F,5F, 1F);
player.level.addFreshEntity(arrow);
}
}
}
}
}
}
Component rightClickMessage = Component.literal("RightClick");
我希望在玩家點及右鍵的時候向玩家傳遞一個訊息,這樣我才知道右鍵偵測有發揮效果。
這段程式碼執行了以下操作:
創建一個名稱為 rightClickMessage 的新變數,用於儲存文字訊息。
使用 Component.literal("RightClick") 創建了一個 Component 物件,其中包含文字訊息 "RightClick"。
player.sendSystemMessage(rightClickMessage);
這段程式碼可以向觸發事件的玩家傳遞系統訊息,內容是"RightClick"。
Component leverMessage = Component.literal("This is a Lever");
我在玩家持有控制桿且點及右鍵的時候,傳一個系統訊息給玩家,內容是"This is a Lever"。
ItemStack HeldItem = player.getItemInHand(InteractionHand.MAIN_HAND);
ItemStack HeldItem: 這行程式碼宣告了一個名稱為 HeldItem 的變數,其型別是 ItemStack。在 Minecraft Forge 中,ItemStack 是一個用於表示物品堆疊的類別,包含有關物品的各種信息,如物品的類型、數量、耐久度等。
player.getItemInHand(InteractionHand.MAIN_HAND): 這部分程式碼是實際取得玩家手上所持物品的部分。它使用了 player 變數,這個變數應該是代表遊戲中的玩家實例。getItemInHand 方法用於獲取玩家手中的物品,並且通過 InteractionHand.MAIN_HAND 指定是主手持有的物品。在 Minecraft 中,玩家有兩只手,主手和副手,這裡使用主手。
剩下的明天說